// pages/useravatar/useravatar.js
import { get, post } from "../../api/request";
import { DOMAIN_NAME, BASE_URL } from "../../api/config";

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {},
    newNickname: '',
    avatarUrl: '',
    isSubmitting: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getUserInfo();
  },

  /**
   * 获取用户信息
   */
  getUserInfo() {
    get('/user/my').then(res => {
      if (res && res.code === 200 && res.data) {
        const userInfo = res.data;
        if (userInfo.avatar) {
          userInfo.avatarUrl = DOMAIN_NAME + '/file/' + userInfo.avatar;
        }
        this.setData({
          userInfo,
          newNickname: userInfo.nickname || '',
          avatarUrl: userInfo.avatarUrl || '/static/png/logo.png'
        });
      }
    }).catch(err => {
      console.error('获取用户信息失败', err);
      wx.showToast({
        title: '获取用户信息失败',
        icon: 'none'
      });
    });
  },

  /**
   * 选择头像
   */
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail;
    this.setData({
      avatarUrl
    });
  },

  /**
   * 输入框变化
   */
  onInput(e) {
    this.setData({
      newNickname: e.detail.value
    });
  },

  /**
   * 保存用户信息
   */
  saveUserInfo() {
    const { avatarUrl, newNickname } = this.data;

    // 验证输入
    if (!newNickname.trim()) {
      wx.showToast({
        title: '用户名不能为空',
        icon: 'none'
      });
      return;
    }

    // 避免重复提交
    if (this.data.isSubmitting) {
      return;
    }

    this.setData({ isSubmitting: true });
    wx.showLoading({
      title: '保存中...',
    });

    // 获取Token
    const token = wx.getStorageSync('token') || '';

    // 上传头像和更新用户信息
    wx.uploadFile({
      url: BASE_URL + '/user/authorization',
      filePath: avatarUrl,
      name: 'avatar_img',
      header: {
        'Authorization': `Bearer ${token}`
      },
      formData: {
        'nickname': newNickname
      },
      success: (res) => {
        console.log('上传头像成功', res);
        let data;
        try {
          data = JSON.parse(res.data);
        } catch (e) {
          console.error('解析响应数据失败', e, res.data);
          wx.showToast({
            title: '服务器响应格式错误',
            icon: 'none'
          });
          return;
        }

        if (data.code === 200) {
          // 更新本地存储的用户信息
          get('/user/my').then(res => {
            if (res.code === 200) {
              // wx.setStorageSync('userInfo', res.data);
            }
          });

          wx.showToast({
            title: data.message || '更新成功',
            icon: 'success'
          });

          // 返回上一页
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
        } else {
          wx.showToast({
            title: data?.msg || data?.message || '更新失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('上传失败', err);
        wx.showToast({
          title: '网络错误，请稍后重试',
          icon: 'none'
        });
      },
      complete: () => {
        this.setData({ isSubmitting: false });
        wx.hideLoading();
      }
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})